package com.zyx.mpgen.gen;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * @author Yaxi.Zhang
 * @since 2022/3/29 15:17
 * desc: 快速生成代码
 */
public class FastAutoGen {
    public static void main(String[] args) {
        FastAutoGenerator
                // 数据库配置
                .create("jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false",
                        "root",
                        "123321"
                )
                // 全局配置
                .globalConfig(builder -> builder
                        // 指定输出目录
                        .outputDir("D://mybatis_plus")
                        // 设置作者
                        .author("zyx")
                        // 配置不打开目录, 默认是打开的(可选)
                        // .disableOpenDir()
                        // 重新生成文件时覆盖原文件, 默认不开启, 即不会覆盖(可选)
                        .fileOverride()
                        // 开启 swagger 模式
                        // .enableSwagger()
                        // 配置日期类型，此处为 ONLY_DATE（可选）
                        .dateType(DateType.ONLY_DATE)
                )
                // 包配置
                .packageConfig(builder -> builder
                        // 设置父包名
                        .parent("com.zyx")
                        // 设置父包模块名
                        .moduleName("mybatisplus")
                        // 设置mapperXml生成路径
                        .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://mybatis_plus"))
                )
                // 生成策略配置
                .strategyConfig(builder -> builder
                        // 设置需要生成的表名, 可以设置多张表
                        .addInclude("t_user", "t_product")
                        // 设置过滤表前缀
                        .addTablePrefix("t_", "c_")
                )
                // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}
